Generally, the term “computer system” refers to either a stand-alone system or a plurality of interconnected systems, such as, for instance, a client-server network. Regardless of the implementation, the various components making up a computer system typically operate within a range of parameters defined by performance protocols or standards. For instance, the temperature within a computer chassis is often monitored in order to detect periods in time when the system may rise above a certain predetermined temperature reading. Other forms of information that may be monitored within a computer system include, without limitation, voltages associated with semiconductor components located on the baseboard of the system, velocity (e.g., rpm) of cooling fans located on the baseboard or within the system chassis, and the velocity of spindle motors within hard disk drives or optical drives.
Various types of sensors are being used to detect operating and performance-related parameters associated with a computer system and its constituent components. Referring to the examples provided above, these sensors include thermostats, voltage meters and tachometers. A computer system typically employs one or more management modules to assist in the collection and analysis of information sensed by the various sensors measuring operating and performance-related parameters within the system. These management modules may be either software or hardware components, but typically encompass both hardware and software components. One such management module is referred to as a “Baseboard Management Controller” (BMC). The BMC is a microcontroller integrated into the baseboard (also known in the industry as the “motherboard”) of a computer system and having a specified number of contact pins through which information sensed by various sensors is received for analysis by the BMC. In order to perform this analysis, the BMC is programmed with firmware fir implementing procedures relating to system monitoring and recovery. With this firmware, the BMC is programmed to monitor various operating and performance-related parameters sensed within a computer system and to analyze this information to determine whether any of the sensed parameters are currently outside of an expected or recommended operating range, the occurrence of which is commonly referred to as an “event.”
In many cases, to increase the number of sensors and devices a single BMC can monitor, the BMC interfaces with one or more multiplexers, which are devices that forward selected analog or digital input signals to intended recipients. In general, multiplexers are used to increase the amount of data that can be sent over a particular network in a particular amount of time or based on a prescribed bandwidth.
Certain problems can arise, however, when a communications channel between a BMC, a mux, and a device or sensor become hung. When such a channel becomes hung, the BMC loses the ability to send and receive information from any sensor or device connected to that mux. Traditional methods for unhanging a hung channel, such as sending a command from the BMC to reset each of the multiplexer's channels, are ineffective when the communication line between the BMC and mux is hung, leaving the BMC unable to communicate with any sensor or device connected to that particular mux.
Therefore, there is a long-felt but unresolved need for a method that ensuring closure of hung bus channels between a BMC and a multiplexer.